package com.lowca.news.service;

import javax.servlet.http.HttpServletRequest;

import com.lowca.news.dao.support.Pager;
import com.lowca.news.entity.User;
import com.lowca.news.exception.account.AutoLoginException;
import com.lowca.news.exception.account.EmailExistException;
import com.lowca.news.exception.account.UsernameExistException;
import com.lowca.news.web.formbean.AdminUserConditionForm;

/**
 * Service接口 - 管理员
 * 
 * @author konglz
 * 
 */

public interface UserService {

	/**
	 * 根据id得到用户对象
	 * 
	 * @param id
	 * @return
	 */
	public User getUserById(Long id);

	/**
	 * 根据用户名判断此用户是否存在（不区分大小写）
	 * 
	 */
	public boolean existUserByUsername(String username);

	/**
	 * 根据邮箱判断此用户是否存在
	 * 
	 */
	public boolean existUserByEmail(String email);

	/**
	 * 根据用户名获取用户对象，若管理员不存在，则返回null（不区分大小写）
	 * 
	 */
	public User getUserByUsername(String username);

	/**
	 * 创建一个用户
	 * 
	 * @param user
	 */
	public void createUser(User user) throws UsernameExistException,
			EmailExistException;

	/**
	 * 更新当前用户
	 * 
	 * @param user
	 */
	public void update(User user);

	/**
	 * 自动授权登录系统
	 * 
	 * @param username
	 *            用户名
	 * @param originalPassword
	 *            原密码（密码明文）
	 * @param request
	 * @throws AutoLoginException
	 * @throws Exception
	 */
	public void autoLogin(String username, String originalPassword,
			HttpServletRequest request) throws AutoLoginException;

	/**
	 * 根据查询条件，按照分页方式查询用户
	 * 
	 * @param userCondition
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Pager<User> searchUser(AdminUserConditionForm condition, int pageNo,
			int pageSize);
}